/*******************************************************************************
* Project: QSAR(Cute Software Architecture) 
*
* Copyright: Copyright(C) 2024 by YuetingBen, All Rights Reserved
*
* File name: DcmDsdCfg.h
*
* Brief: ;
*
* Author: Yueting.Ben
*
* Module: Dem
*
*******************************************************************************/
#ifndef DCMDSDCFG_H
#define DCMDSDCFG_H

/** HEADER FILES **/
#include "DcmDsdType.h"
#include "DcmDspSvc10Type.h"
#include "DcmDspSvc27Type.h"


/** MACRO DEFINITION **/
#define DCM_SUB_FUNC_ID_FIRST_INDEX      0u

/** TYPEDEF DEFINITION **/
typedef enum
{
    DCM_SVC_ID_FIRST = 0x00,
    DCM_SVC_ID_10 = DCM_SVC_ID_FIRST,
    DCM_SVC_ID_11,
    DCM_SVC_ID_14,
    DCM_SVC_ID_19,
    DCM_SVC_ID_22,
    DCM_SVC_ID_27,
    DCM_SVC_ID_28,
    DCM_SVC_ID_2E,
    DCM_SVC_ID_2F,
    DCM_SVC_ID_31,
    DCM_SVC_ID_3E,
    DCM_SVC_ID_85,
    DCM_SVC_ID_MAX
}Dcm_SvcIdType;

typedef enum
{
    DCM_SVC_SUB_ID_10_FIRST = 0x00,
    DCM_SVC_SUB_ID_10_01 = DCM_SVC_SUB_ID_10_FIRST,
    DCM_SVC_SUB_ID_10_02,
    DCM_SVC_SUB_ID_10_03,
    DCM_SVC_SUB_ID_10_MAX
}Dcm_SvcSubId10Type;

typedef enum
{
    DCM_SVC_SUB_ID_19_FIRST = 0x00,
    DCM_SVC_SUB_ID_19_01 = DCM_SVC_SUB_ID_19_FIRST,
    DCM_SVC_SUB_ID_19_02,
    DCM_SVC_SUB_ID_19_04,
    DCM_SVC_SUB_ID_19_06,
    DCM_SVC_SUB_ID_19_0A,
    DCM_SVC_SUB_ID_19_MAX
}Dcm_SvcSubId19Type;

typedef enum
{
    DCM_SVC_SUB_ID_27_FIRST = 0x00,
    DCM_SVC_SUB_ID_27_01 = DCM_SVC_SUB_ID_27_FIRST,
    DCM_SVC_SUB_ID_27_02,
    DCM_SVC_SUB_ID_27_03,
    DCM_SVC_SUB_ID_27_04,
    DCM_SVC_SUB_ID_27_MAX
}Dcm_SvcSubId27Type;

typedef enum
{
    DCM_SVC_SUB_ID_28_FIRST = 0x00,
    DCM_SVC_SUB_ID_28_00 = DCM_SVC_SUB_ID_28_FIRST,
    DCM_SVC_SUB_ID_28_03,
    DCM_SVC_SUB_ID_28_MAX
}Dcm_SvcSubId28Type;


typedef enum
{
    DCM_SVC_SUB_ID_3E_FIRST = 0x00,
    DCM_SVC_SUB_ID_3E_00 = DCM_SVC_SUB_ID_3E_FIRST,
    DCM_SVC_SUB_ID_3E_MAX
}Dcm_SvcSubId3EType;

typedef enum
{
    DCM_SVC_SUB_ID_85_FIRST = 0x00,
    DCM_SVC_SUB_ID_85_01 = DCM_SVC_SUB_ID_85_FIRST,
    DCM_SVC_SUB_ID_85_02,
    DCM_SVC_SUB_ID_85_MAX
}Dcm_SvcSubId85Type;


/** LOCAL DATA DEFINITION **/
extern const Dcm_SubSvcCfgType svc10SubFuncCfg[DCM_SVC_SUB_ID_10_MAX];
extern const Dcm_SubSvcCfgType svc27SubFuncCfg[DCM_SVC_SUB_ID_27_MAX];

extern const Dcm_SvcCfgType Dcm_SvcCfg[DCM_SVC_ID_MAX];
extern const Dcm_SvcCfgType Dcm_SvcFuncCfg[4u];
#endif
